#define _CRT_SECURE_NO_WARNINGS 1

			《 Linux 快捷指令 》

1 . ls	- 显示工作目录中文件的信息。
2 . pwd	- 显示当前工作目录。
3 . mkdir	- 创建一个目录。  -p a/b/c/... 连续创建目录
4 . cd	- 进入到目录中。
5 . rmdir	- 从目录列表中删除空目录。
6 . cp	- 将文件从一个目录移动到另一个目录。
7 . mv	- 重命名和替换文件 类似剪切
8 . rm	- 删除文件
9 . uname	- 命令获取有关操作系统的基本信息
10. locate- 在数据库中查找文件。
11. touch	- 创建空文件
12. ln	- 创建到其他文件的快捷方式
13. cat	- 在终端上显示文件内容 //nano 记事本: nano code.c
14. clear	- 清楚终端的缓存
15. ps	- 在终端中显示进程  (ps -al 查看所有运行中的进程)
16. man	- 所有Linux命令的访问手册
17. grep	- 在输出中搜索特定的字符串
18. echo	- 在终端上显示活动进程
19. wget	- 从网上下载文件
20. whoami- 显示当前操作的人是谁
21. sort	- 对文件内容进行排序
22. cal	- 在终端中查看日历
23. whereis - 查看此命令后任何命令类型的确切位置
24. df	- 检查文件系统的详细信息
25. wc	- 使用不同的选项检查文件中的行、字数和字符
26. rm -rf name 删除整个文件夹。

27. ldd test.exe 用于列出可执行文件或共享库所依赖的 共享库。

——————————————————————————————————————————————————————————————

		《 复制文件夹 并改名 》
[a@192 dir]$ cp -r file01 ./file02

		《 删除文件夹 及其内容 》
[a@192 roommate3D]$ rm -rf file 

——————————————————————————————————————————————————————————————

 1. ls  罗列出当前路径下的文件名
 file.txt

 2. pwd 查看我们当前在Linux系统中所处路径 
 home / a / 111

 3. cd 111 进入指定的"文件夹": [111]

 4. mkdir 111 在当前路径下创建一个新的文件夹 [111]

 5. clear 清屏 

 6. touch file.txt 在当前目录下，创建一个新的文件：file.txt

——————————————————————————————————————————————————————————————

任何目录下，都会默认具有两个隐藏目录 . 和 .. 

 .  用它来表示 当前路径    // 方便我们找到当前目录下的文件(可执行文件)
 .. 用它来表示 上一级路径  // 方便我们进行路径的回退。

——————————————————————————————————————————————————————————————

切换 Tab 窗口 Ctrl + PgUp 或 Alt + 1 ~ 2 

——————————————————————————————————————————————————————————————

01. ls 指令
语法 : ls[选项][目录或文件]
功能 : 对于目录，该命令列出该目录下的所有子目录与文件。
对于文件，将列出文件名以及其他信息。常用选项 :
	· -a 列出目录下的所有文件，包括以.开头的隐含文件。
	· -d 将目录象文件一样显示，而不是显示其下的文件。如 : ls -d 指定目录· 
	· -i 输出文件的i节点的索引信息。如Is - ai指定文件
	· -k 以 k 字节的形式表示文件的大小。	ls -alk 指定文件
	· -l 列出文件的详细信息。
	· -n 用数字的UID, GID代替名称。(介绍UID，GID)
	· -F 在每个文件名后附上一个字符以说明该文件的类型，	* "表示可执行的普通文件;"""表示目录; 
	“@"表示符号链接;“|"表示FIFOs; “ = "表示套接字(sockets)。(目录类型识别)
	· -r 对目录反向排序。
	· -t 以时间排序。
	· -s 在l文件名后输出该文件的大小。(大小排序，如何找到目录下最大的文件)
  · -R 列出所有子目录下的文件。(递归)
	· -1 一行只输出一个文件。

 举例：
		ls -l  列出文件的详细信息。

——————————————————————————————————————————————————————————————

02. pwd 命令
语法：pwd
功能：线上用户当前所在的目录

——————————————————————————————————————————————————————————————

03. cd 指令
Linux系统中，磁盘上的文件和目录被组成一颗目录树，每个结点都是目录或文件。
语法： cd 目录名
功能：改变工作目录，将当前工作目录改变到指定的目录下。

 cd ..            返回上级目录
 cd /home/a/111   绝对路径
 cd ../b/222      基于当前路径的上一级路径的 相对路径
 cd ~	            进入用户家目录
 cd -             返回最近访问目录( 跳转到我们最近一次所处的路径下)

——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


			《 linux 03 》


which ls - 打印出制定指令 ls 所在路径。
mkdir - 默认语法是: mkdir(目录名), 创建新目录
mkdir - p a / b / c / d / e  创建一串目录 a 包涵 b, b 包涵 c, c..依次包涵
alias - (起别名) : alias ll='ls -l --color=auto'
unalias ll      (删除别名)
alias ll        (查看某个别名的定义) 
永久保存别名：将别名定义添加到用户的 shell 配置文件中： source ~/.bashrc    (如 .bashrc 或 .bash_profile)

touch - 命令在终端中以以下格式输入时，会创建一个空文件，其中<文件名>是要创建的文件名。

tree - 以树状形式显示目录结构：tree a   a【b[c(d(e))]】
command not found...
yum - y install tree		安装 tree 命令

ctrl + c 终止异常的命令

stat 111.txt - 查看文件111.txt 的 ACM 时间
Access : -访问
Modify : -修改
Change : -改变

——————————————————————————————————————————————————————————————

        《 rm删除文件，rmdir删除目录 》

rmdir - 命令用于永久删除 空目录。rmdir只能删除空目录：rmdir 111_dir 。要执行此命令，运行此命令的用户必须在父目录中具有 sudo 特权。
rm - 通常用于删除目录中创建的文件, rm 111.txt
rm - f 111.txt 强制删除.
rm - r a  递归式删除 指定的 a 目录
rm - rf a 强制删除 指定目录 a

 * -表示一个通配符，匹配任意文件名
 date*11  表示 前面为 date 中间任意... 末尾以 11结尾
rm - rf * 强制删除当前所有目录
rm - rf * 1 强制删除当前所有以 1结尾 的目录
 321 2	·11
ls --color = auto - l 带颜色

[a@192 a]$ rm -f *.txt  //删除所有 .txt 文件

userdel -r		//删除：就是删除用户的相关数据， 会把对应配置文件也删除。一般推荐这个删除

——————————————————————————————————————————————————————————————

        《 man 手册 》
16. man - 所有Linux命令的访问手册
man man - man的9条指令手册
man printf 不是C库函数，由1→9 依次查询，查到了就使用了，linux 也有prentf(2)
man 3 printf - C库函数的prentf
yum - y install man - pages		安装 man手册指令

——————————————————————————————————————————————————————————————

cp - 相当于Windows中的复制粘贴和剪切粘贴。
cp str a - 把str拷贝到 a目录
cp - rf str a / 111dir - 把str拷贝到 a目录, 并重命名为：111dir

			《 复制文件到指定路径 》
（1）.【cp】 + 【 -r】 + 【目录名（可带路径）】 + 【目标路径（带路径）】 - r 表示复制目录下所有子目录以及文件
（2）.【cp】 + 【目录名/*】+【目标路径（带路径）】 /*表示目录下所有文件和目录 *是通配符
 跨服务器拷贝
 scp [参数] [原路径] [目标路径]

 复制上层路径的文件到当前路径
[a@192 b]$ cp ../test.c ./

——————————————————————————————————————————————————————————————

mv - 将指定目录下的文件或目录，‘剪切’到指定目录下。  一般用于重命名文件
【 mv(1内容) (2路径) / (3重命名) 】
mv .. / 111.txt . / 222.txt	//剪切上层文件 111.txt 到当前目录 并重命名为 222.txt 

——————————————————————————————————————————————————————————————

yum install - y nano		//安装nano
nano(源文件)记事本: nano code.c
13. cat - 在终端上显示文件内容 cat code.c 显示 code.c 中的内容
语法 : cat[选项][文件]功能 : 查看目标文件的内容常用选项 :
	-b 对非空输出行编号
	- n 对输出的所有行编号
	- s 不输出多行空行 //把连续多行空格 压缩成一行空格

	tac   tac[选项][文件]功能 ：倒着逐行打印 cat 打印的内容。
	gcc code.c //编译code.c
	. / a.out    //运行...

	ls - l 打印文件属性，
	cat code.c 本质是显示文件内容。

	——————————————————————————————————————————————————————————————

	uname - 命令用于检查系统的完整操作系统信息。请查看以下命令和输出。
	locate - 命令通常用于定位数据库中的文件。使用星号(*) 搜索包含两个或两个以上单词的内容。
	ln - 命令用于创建指向另一个文件的快捷链接。

	——————————————————————————————————————————————————————————————


	——————————————————————————————————————————————————————————————

   
			《 Linux 04 》


Linux理念:linux中一切皆文件。
Linux 可以以统一的方式来访问 文件/设备 ...
普通文件vs显示器
对于任何文件来讲，读和写文件
显示器设备->显示器文件->向显示器打印，向显示器文件进行写入

command >  filename : 输出重定向
command >> filename : 追加重定向
command <  filename : 输入重定向


echo "hello Linux"			//把“ ”里的内容输出到屏幕
echo "hello Linux" > log.txt  //把“ ”里的内容输写到 log.txt 没有回直接创建这个文件。

		【 >  输出重定向 】
  >new.txt	
 1.可以直接新建一个文件 new.txt ,
  >new.txt   
 2.也可以清空这个文件，如果文件存在直接清空文件，如果不存在就创建这个文件。(与C语言的 以"w"方式写类似)

int main()
{
    //FILE* fp = fopen("new.txt", "w");	// == Linux:  > new.txt 输出重定向  类似于C语言的以写的方式进行打开文件。
   
  FILE* fp = fopen("new.txt", "a");		// == Linux:  >> new.txt  // a: append : 追加   ，如果不存在就创建这个文件
 
	  if (fp == NULL)
        return 1;

    fclose(fp);
}

		【 ' > ' 输出重定向 】
  > 输出重定向  到显示窗口：
 echo "hello" > /dev/pts/0	//向 0 号窗口显示 hello 
 echo "hello" > /dev/pts/1	//向 1 号窗口显示 hello 
 echo "hello" > /dev/pts/3	//向 3 号窗口显示 hello 


		【‘ >> ’ 追加重定向 】
echo "hello">>new.txt  //从文件尾 换行写入


创建一个大文件： hello Linux1  ~10000 
 i = 1; while [ $i -le 10000 ]; do echo "hello Linux $i"; let i++; done				// 屏幕输出 1~10000 ：hello Linux 1 ...  ~  hello Linux 10000
 i = 1; while [ $i -le 10000 ]; do echo "hello Linux $i"; let i++; done > big.txt 	// 向文件big.txt  写入 1~10000 个：hello Linux 1 ...  ~  hello Linux 10000

 more big.txt  只查看一页 big.txt 中的内容，然后逐行查看。
 输入：q  退出
 输入：/999  跳转查看 999行附近

 less big.txt	 // 推荐 less 查看大文本，可以上下滑动查看，
 还可以 /99 高亮查看 指定内容。 一般用于查日志。


		《 head 头和尾 tail》
 头尾部查看文件内容：
 head big.txt		//查看文件前 10 行。
 head -5 big.txt	//查看文件前 5  行。
 head -20 big.txt	//查看文件前 20 行。
与之对应的
 tail big.txt		//查看文件后 10 行。
 tail -5 big.txt	//查看文件后 5  行。


		《 管道 ‘|’(可以级联) 》
 head -8010 big.txt | tail -11		//8010 big.txt 的末尾11行(8000~8010行)   管道 ‘|’  ——用于资源传输  
 wc -l big.txt	//统计文本行数
 head - 8010 big.txt | tail - 11 | tac  //big.txt 中8000~8010行，tac逆向打印。 管道 ‘|’ 可以用于级联多条指令执行
 tail -50 big.txt | less	//逐行查找 big.txt 后50行。 比如查看日志。

——————————————————————————————————————————————————————————————


	<  输入重定向 
 cat 		//从键盘读取数据，显示到屏幕
 cat < log.txt	//把 log.txt 中的内容输出到屏幕。 


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


14.时间相关的指令
date显示

date指定格式显示时间 : date + % Y : % m : % d

 星期三  十二月   20日    几点几分    美国时间   年     // 中部时间（CST）
   Wed     Dec     20     02:46 : 12    PST     2023
自定义输出格式：date + % Y - % m - % d_ % H: % M : % S
2023 - 12 - 20_02 : 54 : 05



date用法 : date[OPTION]...[+FORMAT]

1.在显示方面，使用者可以设定欲显示的格式，
格式设定为一个加号后接数个标记，其中常用的标记列表如下

% H : 小时(00..23)
% M : 分钟(O0..59) % S∶秒(O0..61)
% X : 相当于 % H : % M : % S % d : 日(01..31)
% m : 月份(01..12)
% Y : 完整年份(O000..9999) % F∶相当于 % Y - % m - % d

⒉在设定时间方面
时间->时间戳: date + % s
 date + % s  // 时间戳 ： 1703070286  

 @ 把时间戳转换为对应格式输出
date + % Y - % m - % d_ % H: % M : % S - d @1703070286
2023 - 12 - 20_03:04 : 46

《时间戳》的起始时间: 1970年1月1日00:00:00 UTC
1970年1月1日00:00:00 UTC‌（协调世界时）

中部时间（CST）
date + % Y - % m - % d_ % H: % M : % S - d @0
1970-01-01_08:00:00  【格林威治 时间+8:00 CST中巴区】	

Unix时间戳(英文为Unix epoch, Unix time, POSIX time或 Unix timestamp)
是从1970年1月1日(UTC / GMT的午夜）
开始所经过的秒数，不考虑闰秒。
	

15.Cal指令
 
cal命令可以用来显示公历(阳历)日历。
     December 2023   
Su Mo Tu We Th Fr Sa
               1  2
3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

公历是现在国际通用的历法，又称格列历，通称阳历。“阳历"又名"太阳历”，系以地球绕行太阳一周为一年，为西方各国所通用，故又名"西历”。

cal[options] [[[day]month] year]

Options 选项:
- 1, --one        show only current month(default)		// 一个 仅显示当前月份（默认值）
- 3, --three      show previous, currentand next month	// 三个 显示上个月、当前月和下个月
- s, --sunday     Sunday as first day of week				// 周日 周日为一周的第一天
- m, --monday     Monday as first day of week				// 周一 周一为一周的第一天
- j, --julian     output Julian dates						// 儒略 输出儒略日期
- y, --year       show whole current year					// 年份 显示当前年份的全部
- V, --version    display version informationand exit		// 版本 显示版本信息并退出
- h, --help       display this help textand exit			// help 显示此帮助文本并退出


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


		16.	《 find 指令 》

Linux下find命令在目录结构中搜索文件，并执行指定的操作。
Linux下find命令提供了相当多的查找条件，功能很强大。由于find具有强大的功能，所以它的选项也很多，其中大部分选项都值得我们花时间来了解一下。
即使系统中含有网络文件系统(NFS)，find命令在该文件系统中同样有效，只你具有相应的权限。在运行一个非常消耗资源的find命令时，
 很多人都倾向于把它放在后台执行，因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

语法 : find pathname - options
功能 : 用于在文件树种查找文件，并作出相应的处理（(可能访问磁盘)常用选项 :

	-name按照文件名查找文件。
 find -name txt
 find /usr/bin -name which	//也可以查找指令所在路径
 结果：usr / bin / which

 关键字 + 你要查找路径 + 以什么方式查找 + 文件名
 find  你要查找路径-opt(name)          filename 
 find /home/whb -name *.txt  // 查找/home/whb路径下 所有以 txt 结尾的文件。


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


		17.	《 grep指令 》
 
grep参考文档
语法 : grep[选项]搜寻字符串文件
功能 : 在文件中搜索字符串，将找到的行打印出来常用选项:
· - i : 忽略大小写的不同，所以大小写视为相同. [ i - ignore 忽略 ]
· - n : 附加输出行号
· - v∶反向选择，亦即显示出没有'搜寻字符串'内容的那一行

 grep "999" big.txt //行文本过滤，把big.txt 中带999 的数据过滤出来。

 ps ajx | grep "bash"	//比如查看进程 中包涵 bash 对应字样的进程显示出来。

grep - ivn "X" simple.txt  //· - i,- n ,- v  可以连写。[ 将 simple.txt 文件中 包涵 'X'(-i忽略大小写) (-v反选，不包含'X')的内容 (-n带行号)显示出来 ]

也可以使用级联的方式进行使用
 cat simple.txt | grep - niv 'x' | tac | wc - l // [ simple.txt 中不含 大小写 'x' 的数据 倒着显示 有多少行]
 cat big.txt | grep 99 | less // [ 逐行查看 big.txt 中包涵99 的数据行 ]

——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


			《 zip压缩 —— unzip解压 》

将test2目录压缩: zip test2.zip test2/*
解压到tmp目录: unzip test2.zip -d /tmp


zip[-options][-b path][-t mmddyyyy][-n suffixes][zipfile list][-xi list]
The default action is to add or replace zipfile entries from list, which
can include the special name - to compress standard input.
If zipfile and list are omitted, zip compresses stdin to stdout.
- f   freshen : only changed files - u   update : only changed or new files
- d   delete entries in zipfile - m   move into zipfile(delete OS files)
- r   recurse into directories - j   junk(don't record) directory names
	- 0   store only - l   convert LF to CR LF(-ll CR LF to LF)
	- 1   compress faster - 9   compress better
	- q   quiet operation - v   verbose operation / print version info
	- c   add one - line comments - z   add zipfile comment
	- @   read names from stdin - o   make zipfile as old as latest entry
	- x   exclude the following names - i   include only the following names
	- F   fix zipfile(-FF try harder) - D   do not add directory entries
	- A   adjust self - extracting exe - J   junk zipfile prefix(unzipsfx)
	- T   test zipfile integrity - X   eXclude eXtra file attributes
	- y   store symbolic links as the link instead of the referenced file
	- e   encrypt - n   don't compress these suffixes
	- h2  show more help

zip[-options][-b路径][-t mmddyyyy][-n后缀][zipfile列表][-neneneba xi列表]
默认操作是添加或替换列表中的zipfile条目
可以包含特殊名称 - 以压缩标准输入。
如果省略了zipfile和list，zip会将stdin压缩为stdout。
- f 刷新：仅更改的文件 - u更新：仅更改或新建的文件
- d 删除zipfile中的条目 - m移动到zipfile（删除操作系统文件）
- r 递归到目录 - j垃圾（不记录）目录名
- 0 仅存储 - l将LF转换为CR LF（ - ll CR LF转换为LF）
- 1 压缩得更快 - 9压缩得更好
- q quiet操作 - v详细操作 / 打印版本信息
- c 添加一行注释 - z添加zipfile注释
- @ 从stdin读取名称 - o使zipfile与最新条目一样旧
- x 排除以下名称 - i仅包括以下名称
- F 修复zipfile（ - FF更努力） - D不添加目录项
- A 调整自解压的exe - J垃圾压缩文件前缀（unzip sfx）
- T 测试zipfile完整性 - X排除eXtra文件属性
- y 将符号链接存储为链接，而不是引用的文件
- e encrypt - n不压缩这些后缀
- h2显示更多帮助

——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————

		
			《 tar指令 》

19.tar指令(重要) :打包 / 解包，不打开它，直接看内容
tar[-cxtzjvf]文件与目录.....参数 :

· -c∶建立一个压缩文件的参数指令(create的意思);
· -x∶解开一个压缩文件的参数指令!
· -t:查看tarfile 里面的文件!
· -z︰是否同时具有gzip的属性 ? 亦即是否需要用gzip 压缩 ?
· -j : 是否同时具有bzip2的属性 ? 亦即是否需要用bzip2压缩 ?
· -v : 压缩的过程中显示文件!这个常用，但不建议用在背景执行过程!
· - f : 使用档名，请留意，在f之后要立即接档名喔!不要再加参数!
· - C : 解压到指定目录


打包并压缩:
zip[-r] name.zip file1 file2...
解压
unzip name.zip[-d path]

打包并压缩:
tar - cvzf name.tgz file1 file2 ...
解压
tar - xvzf name.tgz [-C path]  // -C 解压到指定目录，大写的C


创建 100 个文件 ：cnt=0; while [ $cnt -le 100 ]; do touch file${cnt}.txt; let cnt++; done

cnt = 0;					//创建一个变量 从 0 开始。
while[$cnt -le 100];		//判断条件 cnt到 100 停止: ( cnt <= 100 )
do touch file${ cnt }.txt;//生成文件 file0 ~ file100 .txt 文件
let cnt++;				//变量累加变化
done						//结束


基于 xshell 进行 windows 和 Linux 的互传 <=  => 压缩包：
 yum -y install lrzsz		//云服务器安装 
 tar -czf dir.tgz dir		//把dir 以tgz 格式进行打包压缩
 sz dir.tgz				//把压缩包 发送到windows指定位置

 rz	(选择文件...)		//把 windons 文件到 Linux 打开
 tar -xzf dir.tgz			//比如把桌面的压缩包文件(dir.tgz)在 Linux 中解压 

两台 Linux 互传
 跨网络拷贝 dir.tgz 到 root@43.138.218.168 这台账号上的 (:/root)路径上。  

scp dir.tgz root@43.138.218.168:/root  //scp：跨网络拷贝。 cp:本地拷贝 
scp XXX.tgz用户名@另一台linux机器的ip:你要拷贝到的路径


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


20.		《 bc指令: 》

 云安装 bc: yum install -y bc  
bc命令可以很方便的进行浮点运算

Linux 的计算器
echo 1+2+3+4+5+6+7 | bc 
结果：28


——————————————————————————————————————————————————————————————


21.	《 uname - r指令 : 》

 语法 : uname[选项]
功能 : uname用来获取电脑和操作系统的相关信息。
补充说明 : uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。

常用选项:
 -a 或 - all 详细输出所有信息，依次为内核名称，
主机名，内核版本号，内核版本，硬件名，处理器类型，
硬件平台类型，操作系统名称


uname -r	//显示当前计算机 CPU 内核版本
 3.10.0 - 1160.el7.x86_64
 内核版本  el7:装的centos7   x86(32位机器)，x86_64 或 x64 (64位机器)

查看当前计算机操作系统版本
cat /etc/redhat-release  
CentOS Linux release 7.9.2009 (Core)

查看当前计算机 CPU 信息：
cat / proc / cpuinfo

查看内存信息：
cat / proc / meminfo


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


22.重要的几个热键[Tab], [ctrl] - c, [ctrl] - d

[Tab]按键-- - 具有『命令补全』和『档案补齐』的功能
[Ctrl] - c按键-- - 让当前的程序『停掉』
[Ctrl] - d按键-- - 通常代表着:
『键盘输入结束(End Of File, EOF或 End Oflnput)』
的意思; 另外，他也可以用来取代exit

[Ctrl] - r按键-- - 对历史命令进行搜索，比如程序段;
比如：[Ctrl] - r : while
cnt = 0; while[$cnt - le 100]; do touch file${ cnt }.txt; let cnt++; done


23.关机

语法 : shutdown[选项] * *常见选项 : **
· - h : 将系统的服务停掉后，立即关机。 //也可以使用 halt 来关机
· - r : 在将系统的服务停掉之后就重新启动
· - t sec : -t后面加秒数，亦即『过几秒后关机』的意思

 reboot ：重启


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


		《 Linux权限的概念 》


Linux下有两种用户 : 超级用户(root) 、普通用户。
超级用户: 可以再linux系统下做任何事情，不受限制
普通用户: 在linux下做有限的事情。

超级用户的命令提示符是"“#"，
普通用户的命令提示符是"$"”。命令 : su[用户名]

功能 : 切换用户。
例如，要从root用户切换到普通用户user，则使用su user。
要从普通用户user切换到root用户则使用suroot(root可以省略)，
此时系统会提示输入root用户的口令。

 su (输入密码)，切换为root,但是当前路径不会发生改变。
 su - (输入密码)，重新登录root账户,当前路径在 root 根目录。
 su 用户名：可以直接从 root 变成普通用户
 而普通用户想变成 root 必须要验证(密码)。



				   用户所属组   最近修改时间   文件名
-rw - rw - r-- 1 whb  whb  0  Nov 30 21:24   normal.txt 
-rw - r  --r-- 1 root rooy 0  Nov 30 21:24   root.txt
Linux具有组的概念, 主要是在多人协作的时候更好的进行权限管理!

		《 shell （壳） 》
将使用者的命令翻译给核心(kernel)处理。
同时，将核心的处理结果翻译给使用者。


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


			《 文件权限 》


			《 文件信息介绍 》
 drwxrwxr-x. 2 a a 6 Dec 31 02:22 dir
 -rw-rw-r--. 1 a a 0 Dec 31 02 : 13 test.txt

如上信息：第一个字符：
 - 开头:普通文件 
 d 开头:目录文件

文件的属性权限：一般有 3种
 r :读
 w :写
 x :可执行权限

如：drwxrwxr-x
除去开头一个 d 表示文件类型，剩下的一般为 9个字符 ：rwxrwxr-x ，
3个为一组，分别对应：
【拥有者】【所属组】【other】
【 [rwx]     [rwx]    [r-x]】
 [rw- rw- r--]

 d rwx rwx r-x
  [rwx] 中：
第一个字符:是否具有读权限		//如果是,就是 r ，否则就是 - 
第二个字符:是否具有写权限		//如果是,就是 w ，否则就是 - 
第三个字符:是否具有可执行权限	//如果是,就是 x ，否则就是 - 


文件权限   用户所属组     最近修改时间   文件名
-rw-rw-r-- 1 whb  whb  0  Nov 30 21:24   normal.txt 
-rw-r--r-- 1 root rooy 0  Nov 30 21:24   root.txt


		《 修改权限 》
whoami是谁,谁就可以修改权限： root 

chmod u - r test.txt
chmod 所属组 +或-权限内容 r(读) w(写) x(可执行权限) 需要修改权限的文件
chmod u(拥有者)/g(所属组)/o(other) [+/-]rwx 需要修改权限的文件
	   【 user,   group,    other,   all 】

也可以同时修改多个权限
chmod o + rwx test.txt	//添加 r(读) w(写) x(可执行权限)
chmod o - rx test.txt		//减去 r(读) x(可执行权限)

同时修改多用户多权限
chmod u-w, g-r, o-xw test.txt

同时修改所有用户所有权限 // chmod a+ /- rwx
chmod a+rwx test.txt 

——————————————————————————————————————————————————————————————

权限存在的意义:
保证普通用户的文件的一般的安全性!
对用户身份进行识别，只识别一次!

修改拥有者：
 ----rw----. 1 a(拥有者)    a 0 Dec 31 02 : 13 test.txt
chown root test.txt 
 ----rw----. 1 root(拥有者) a 0 Dec 31 02 : 13 test.txt

修改所属组：
 ----rw----. 1 root(拥有者) a(所属组)    0 Dec 31 02 : 13 test.txt
chgrp root test.txt
 ----rw----. 1 root(拥有者) root(所属组) 0 Dec 31 02 : 13 test.txt

添加了对应权限，其他成员才可以以对应权限进行访问:
chmod o+rw test.txt
 ----rw-rw-. 1 root(拥有者) root(所属组) 0 Dec 31 02 : 13 test.txt
 a 用户可以访问 test.txt 的读写权限

修改拥有者为其他普通用户
如果要把文件给别人是强制给的！需要提权，无法直接给。
sudo chown gaobo file.txt //提权修改拥有者
sudo chgrp gaobo file.txt //提权修改所属组
单用户使用 su 把自己变成 root 用户。
sudo chown a:a file.txt	//把 拥有者 和 所属组 同时改回 a ,
sudo chown a:root file.txt//也可分别修改两个

——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————

实例 修改 读、写、可执行 权限：
drwxrwxr-x. 2 a a 6 Dec 31 02:22 dir
-rw-rw-r--. 1 a a 0 Dec 31 02 : 13 test.txt
[a@192 lesson6]$ chmod u - r test.txt			//1.修改test.txt： u(拥有者) r(读)权限
[a@192 lesson6]$ ll
total 0
drwxrwxr - x. 2 a a 6 Dec 31 02 : 22 dir
--w - rw - r--. 1 a a 0 Dec 31 02 : 13 test.txt	//1.读权限被修改为 - 
[a@192 lesson6]$ chmod u - w test.txt			//2.修改test.txt： u(拥有者) w(写)权限
[a@192 lesson6]$ ll
total 0
drwxrwxr - x. 2 a a 6 Dec 31 02 : 22 dir
----rw - r--. 1 a a 0 Dec 31 02 : 13 test.txt		//2.写权限被修改为 - 
[a@192 lesson6]$ chmod u + rw test.txt
[a@192 lesson6]$ ll
total 0
drwxrwxr - x. 2 a a 6 Dec 31 02 : 22 dir
- rw - rw - r--. 1 a a 0 Dec 31 02 : 13 test.txt
[a@192 lesson6]$ chmod g - rw test.txt
[a@192 lesson6]$ ll
total 0
drwxrwxr - x. 2 a a 6 Dec 31 02 : 22 dir
- rw----r--. 1 a a 0 Dec 31 02 : 13 test.txt
[a@192 lesson6]$ chmod o - r test.txt
[a@192 lesson6]$ ll
total 0
drwxrwxr - x. 2 a a 6 Dec 31 02 : 22 dir
- rw------ - . 1 a a 0 Dec 31 02 : 13 test.txt
[a@192 lesson6]$ chmod o + rwx test.txt
[a@192 lesson6]$ ll
total 0
drwxrwxr - x. 2 a a 6 Dec 31 02 : 22 dir
- rw----rwx. 1 a a 0 Dec 31 02 : 13 test.txt
[a@192 lesson6]$ chmod o - rx test.txt
[a@192 lesson6]$ ll
total 0
drwxrwxr - x. 2 a a 6 Dec 31 02 : 22 dir
- rw---- - w - . 1 a a 0 Dec 31 02 : 13 test.txt
[a@192 lesson6]$

也可以同时修改多用户多权限
drwxrwxr - x. 2 a a 6 Dec 31 02:22 dir
- rw - r - xrwx. 1 a a 0 Dec 31 02 : 13 test.txt
[a@192 lesson6]$ chmod u - w, g - r, o - x test.txt
[a@192 lesson6]$ ll
total 0
drwxrwxr-x. 2 a a 6 Dec 31 02 : 22 dir
-r----xr--. 1 a a 0 Dec 31 02 : 13 test.txt

同时修改所有用户所有权限
drwxrwxr - x. 2 a a 6 Dec 31 02:22 dir
- rwxrwxrwx. 1 a a 0 Dec 31 02 : 13 test.txt
[a@192 lesson6]$ chmod a - rwx test.txt
[a@192 lesson6]$ ll
total 0
drwxrwxr - x. 2 a a 6 Dec 31 02 : 22 dir
----------. 1 a a 0 Dec 31 02 : 13 test.txt
[a@192 lesson6]$ chmod a + rw test.txt
[a@192 lesson6]$ ll
total 0
drwxrwxr - x. 2 a a 6 Dec 31 02 : 22 dir
- rw-rw-rw-. 1 a a 0 Dec 31 02 : 13 test.txt
[a@192 lesson6]$


更改【拥有者】：chown name1 filename
更改【所属组】：chgrp name2 filename
两者都改：chown name1:name2 filename
other:不需要修改


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


			《 修改文件权限，8进制转换 》


chmod 八进制 filename 就可以达到修改文件权限的概念。

- rw-rw-r--. 1 a a 0 Dec 31 02 : 13 test.txt

是否具有权限： r 代表是 ，- 代表否 。
可以查看 —>《 文件信息介绍 》
那么我们可以用二进制 0 1 来进行表现。

是 用 1 ， 否 用 0 来表示
那么拥有者对应的权限可以翻译成：

	《 8进制的权限 》
 ---  <==>  000  == 0
 --x  <==>  001  == 1
 -w-  <==>  010  == 2
 -wx  <==>  011  == 3
 r--  <==>  100  == 4
 r-x  <==>  101  == 5
 rw-  <==>  110  == 6
 rwx  <==>  111  == 7

 rw- rw- r-- 的权限就可以翻译成：664

比如：想把test.txt的所有权限去掉
-rwxrwxrwx. 1 a a 0 Dec 31 02:13 test.txt
[a@192 lesson6]$ chmod 000 test.txt	// 以 000 去掉所有权限
 结果：
----------. 1 a a 0 Dec 31 02:13 test.txt

如果：想把test.txt的所有权限加上
[a@192 lesson6]$ chmod 777 test.txt	// 以 777 添加所有权限
结果：
- rwxrwxrwx. 1 a a 0 Dec 31 02:13 test.txt

或者：指向要部分权限
[a@192 lesson6]$ chmod 345 test.txt
结果：
- -wx r-- r-x. 1 a a 0 Dec 31 02:13 test.txt
[011] [100] [101]  == 3 4 5 


——————————————————————————————————————————————————————————————


		< umask >
 Linux 中的权限掩码

创建的普通文件，起始权限是:0666，去掉x的
创建的目录文件，起始权限是:0777，包含x的

创建文件的初识权限受 umask 的值影响
umask 0000 //可以修改默认权限，
0000

创建文件的时候，要从起始权限中，
过滤掉(不是简单的减法)在umask中出现的权限.

umask 的默认值在不同机器上是不一样的。

0002  
 [000 000 010] ==> 002
 [110 110 110] ==> 666
 [rw- rw- rw-] ==> 666

最终权限 = 起始权限 & (~umask) 
 [110 110 110]
&[111 111 101] ==  002 的按位取反
 [110 110 100] ==  664 最后的结果


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


			《 文件的区分 》


3 . mkdir	- 创建一个目录。
11. touch	- 创建空文件

 Windows 是 以文件后缀名来区分文件类型。

 Linux 不是 以文件后缀，来区分文件类型。(不是说 Linux 不用后缀)
 Linux 通过什么区分 ? ? ? 
 ls - l第一个属性列

 Linux文件类型 :
 - : 普通文件，文本文件，可执行程序，库等都叫做普通文件
 d : 目录文件

 b : 块设备文件   ==> 磁盘
 c : 字符设备文件 ==> 显示器
 p : 管道文件     ==> 进程间 通信
 l : 链接文件     ==> 类似快捷方式 启动原路径下的文件


//      《 C 字符设备文件 》
[a@192 ~]$ ls /dev/pts -l                   //查看 显示器所在目录(最后一个数字是 几号显示器）
total 0
crw--w----. 1 a    tty  136, 0 Apr 22 10:29 0
crw--w----. 1 a    tty  136, 1 Apr 22 10:29 1
c---------. 1 root root   5, 2 Apr 22 06:26 ptmx

[a@192 1]$ echo "hello Linux" > /dev/pts/0  //自身是0号设备，向 自身 显示器写入 "hello Linux"
hello Linux
[a@192 1]$ echo "hello Linux" > /dev/pts/1  //自身是0号设备，向 1号显示器 写入 "hello Linux"

//      《 p 管道文件 》
创建管道：用于进程间通信： mkfifo 
[a@192 1]$ mkfifo pipe
prw-rw-r--. 1 a    a        0 Apr 22 22:33 pipe

//向管道写入 文件 hello Linux
[a@192 1]$ echo "hello Linux" > pipe 
//在另一台终端设备bb 读取管道内容
[bb@192 ~]$ cat < pipe 
hello Linux

//      《 l 链接文件 》
//创建 my.exe 的链接文件 XX.link
e/a/Desktop/1/my.exe    
[a@192 ~]$ sudo ln -s /home/a/Desktop/1/my.exe XX.link
lrwxrwxrwx. 1 a a 24 Apr 22 22:53 XX.link -> /home/a/Desktop/1/my.exe
//运行 创建成功的链接文件 == 跑了 my.exe 
[a@192 ~]$ ./XX.link 
hello world!
hello world!
hello world!
[a@192 ~]$ 
//删除链接文件
[a@192 ~]$ sudo unlink XX.link 


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————


	《 7. 显示器 C所在 》

 Linux 终端文件 一般默认在 dev/pts/   (虚拟机 dev/tty )路径下。
 wc -l // 统计行数

			《 粘滞位 》
当一个目录被设置为"粘滞位"(用chmod + t), 则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除三、该文件的所有者删除


使用sudo分配权限
(1)修改letc / sudoers文件分配文件
# chmod 740 / etc / sudoers
# vi / etc / sudoer
格式 : 接受权限的用户登陆的主机 = (执行命令的用户)命令
 (2）使用sudo调用授权的命令
	$sudo - u用户名命令

实例:
$ sudo - u root / usr / sbin / useradd u2


——————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————

	《 8. Linux yum 软件安装 》


3.yum的相关操作:

1.搜索要安装的内容：
yum list | grep XXX
2.安装 XXX
[sudo / root身份]yum install[-y]XXX
3.卸载 XXX
[sudo / root身份]yum remove[-y] XXX

yum list | grep sl	//搜索软件带 sl 内容的软件

yum install sl.x86_64			// yum 安装 sl.x86_64
安装软件需要在 root 权限下安装
sudo yum install sl.x86_64	// yum 安装 sl.x86_64
sudo yum install -y sl.x86_64	// 无需询问、直接安装 sl.x86_64



	《 卸载 》

which sl  //找到软件所在路径
ust/bin/sl 

sudo yum remove sl
sudo yum -y remove sl // 不用询问是否卸载，直接确认


		《 yum 源 》
ls /etc/yum.repos.d/
CentOS-Base.repo //假设有这样一个软件
vim /etc/yum.repos.d/CentOS-Base.repo  //把文件打开，里面内置了，下载该软件相关，所需要的内置链接。

//      《 无法安装问题 》
epel.repo 如果 sl 无法安装成功，需要先安装扩展源
sudo yum -y install -y epel-release //安装扩展源。后，就可以装 sl 了

‌下载新的YUM源配置文件‌：(yum 无法正常安装时 (tree) 的解决方法之一)
[root@192 1]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安装扩展源(就可以装SL 之类的 [小火车] 软件了)
[root@192 /]# sudo yum -y install epel-release


